package 栈;

/**
 * @author: 大怪
 * @email: 962527441@qq.com
 */

import java.util.Stack;

/**
 * 题目：
 * 请根据每日 气温 列表 temperatures ，重新生成一个列表，
 * 要求其对应位置的输出为：要想观测到更高的气温，至少需要等待的天数。如果气温在这之后都不会升高，请在该位置用 0 来代替。
 *
 * 示例 1:
 *
 * 输入: temperatures = [73,74,75,71,69,72,76,73]
 * 输出: [1,1,4,2,1,1,0,0]
 */
public class 每日温度 {
    class Solution {
        public int[] dailyTemperatures(int[] temperatures) {
            Stack<Integer> stack = new Stack<Integer>();
            int[] tmp = new int[temperatures.length];
            for (int i = 0; i < tmp.length; i++) {
                while(!stack.isEmpty() && temperatures[stack.peek()]<temperatures[i]) {
                    int index = stack.pop();
                    tmp[index] = i-index;
                }
                stack.push(i);
            }
            return tmp;
        }
    }
}
